'\" te
.\" Copyright 1989 AT&T.
.\" Copyright (c) 2006, Sun Microsystems, Inc.  All Rights Reserved.
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
.\"  See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with
.\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
.TH END 3C "Mar 31, 2006"
.SH NAME
end, _end, etext, _etext, edata, _edata \- last locations in program
.SH SYNOPSIS
.LP
.nf
\fBextern int \fR\fI_etext\fR\fB;\fR
.fi

.LP
.nf
\fBextern int \fR\fI_edata\fR\fB;\fR
.fi

.LP
.nf
\fBextern int \fR\fI_end\fR\fB;\fR
.fi

.SH DESCRIPTION
.sp
.LP
These names refer neither to routines nor to locations with interesting
contents; only their addresses are meaningful.
.sp
.ne 2
.na
\fB\fB_etext\fR\fR
.ad
.RS 10n
The address of \fB_etext\fR is the first location after the last read-only
loadable segment.
.RE

.sp
.ne 2
.na
\fB\fB_edata\fR\fR
.ad
.RS 10n
The address of \fB_edata\fR is the first location after the last read-write
loadable segment.
.RE

.sp
.ne 2
.na
\fB\fB_end\fR\fR
.ad
.RS 10n
If the address of \fB_edata\fR is greater than the address of \fB_etext\fR, the
address of _end is same as the address of \fB_edata\fR.
.sp
If the address of \fB_etext\fR is greater than the address of \fB_edata\fR, the
address of \fB_end\fR is set to the page boundary after the address pointed to
by \fB_etext\fR.
.RE

.SH USAGE
.sp
.LP
When execution begins, the program break (the first location beyond the data)
coincides with \fB_end\fR, but the program break can be reset by the
\fBbrk\fR(2), \fBmalloc\fR(3C), and the standard input/output library (see
\fBstdio\fR(3C)), functions by the profile (\fB-p\fR) option of  \fBcc\fR, and
so on. Thus, the current value of the program break should be determined by
\fBsbrk ((char *)0)\fR.
.sp
.LP
References to \fBend\fR, \fBetext\fR, and \fBedata\fR, without a preceding
underscore will be aliased to the associated symbol that begins with the
underscore.
.SH SEE ALSO
.sp
.LP
.BR brk (2),
.BR malloc (3C),
.BR stdio (3C)
